﻿using System;
using System.Collections.Generic;
using eCommerce.Core.Domain.Addresses;
using eCommerce.Core.Domain.Customers;
using eCommerce.Core.Domain.Payments;
using eCommerce.Core.Domain.Shippings;
using eCommerce.Core.Domain.Shops;
using eCommerce.Core.Domain.Tradings;

namespace eCommerce.Core.Domain.Orders
{
    public class Order : BaseEntity
    {
        public virtual int ShopId { get; set; }

        public virtual Shop Shop { get; set; }


        public virtual bool Deleted { get; set; }

        public virtual int CustomerId { get; set; }
        public virtual Customer Customer { get; set; }



        public virtual decimal ShippingPrice { get; set; }

        public virtual decimal OrderTotal { get; set; }

        public virtual decimal RefundedAmount { get; set; }



        public virtual OrderStatus OrderStatus { get; set; }

        /// <summary>
        /// Gets or sets the payment status
        /// </summary>
        public virtual PaymentStatus PaymentStatus { get; set; }

        /// <summary>
        /// Gets or sets the shipping status
        /// </summary>
        public virtual ShippingStatus ShippingStatus { get; set; }


        public virtual string PaymentMethodSystemName { get; set; }


        public virtual DateTime? PaidDate { get; set; }

        public virtual Address ShippingAddress { get; set; }
        public virtual int? ShippingAddressId { get; set; }

        public virtual DateTime CreatedOn { get; set; }

        public virtual IList<OrderItem> OrderItems { get; set; }

        public virtual IList<TradingOrder> Tradings { get; set; }
        
    }
}